﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Metadata.Edm;
using System.Web.Mvc;


namespace SoftHotel.Models
{
    public class ServicioDAO : DbContext
    {
        public DbSet<Servicio> servicios { get; set; }
        public DbSet<DatoServicio> datos { get; set; }


        public List<Servicio> servicioslista = new List<Servicio>() { };
        public List<Servicio> busquedares = new List<Servicio>() { };

        public ServicioDAO():base("conexionPrincipalDAO"){}
        private Conexion conexionBD = new Conexion();
     
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Servicio>().ToTable("Servicio");
            modelBuilder.Entity<DatoServicio>().ToTable("DatoServicio"); 
        }

        public void Agregar(Servicio servicio){
            servicio.fechaRegistro = DateTime.Now;
            if (servicio.estado == 1)
            {
                servicio.fechaActivacion = DateTime.Now;
            }
            servicios.Add(servicio);  
        }

        public Servicio Buscar(int idServicio)
        {
            Servicio servicio = servicios.Where(g => g.idServicio == idServicio).First();
            servicio.nombreEstado = getEstado(servicio.estado);
            servicio.sede = getSede(servicio.idSede);
            servicio.producto = getProducto(servicio.idProducto);
            return servicio;
        }

        public List<Servicio> Buscar(Servicio servicio)
        {
            var ser = servicios.Where(g =>g.idSede == servicio.idSede);
            foreach(Servicio s in ser){
                s.nombreEstado = getEstado(s.estado);
                s.sede = getSede(s.idSede);
                s.producto = getProducto(s.idProducto);
            }
           // var ser = servicios.Where(g => g.numeroReserva.ToUpper().Contains(reserva.numeroReserva));
            return ser.ToList();
        }

        public void Editar(Servicio servicio)
        {
            this.Entry(servicio).State = EntityState.Modified;
            this.SaveChanges();
        }

        public void Anular(Servicio servicio)
        {
            servicio.estado = 0;
            this.Entry(servicio).State = EntityState.Modified;
            this.SaveChanges();
        }

        public void AgregarDato(DatoServicio  detalle)
        {
            datos.Add(detalle);
        }

        public void EditarDato(DatoServicio detalle)
        {
            this.Entry(detalle).State = EntityState.Modified;
            this.SaveChanges();
        }

        public void EliminarDato(DatoServicio detalle)
        {
            this.Entry(detalle).State = EntityState.Deleted;
            this.SaveChanges();
        }


         public String getEstado(int id){ //id representa el valor
            conexionBD.AbrirConexion();
            String consulta = "SELECT valor from PARAMETRO WHERE tipo = \'ESTADO_SERVICIO\' and valorNum = "+id;
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0].ToString();
            dataReader.Close();
            conexionBD.CerrarConexion();
            return aux;
        }

        public String getSede(int id)
        {
            conexionBD.AbrirConexion();
            String consulta = "SELECT nombre from SEDE WHERE idSede = " + id;
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0].ToString();
            dataReader.Close();
            conexionBD.CerrarConexion();
            return aux;
        }

        public String getProducto(int id)
        {
            if (id != 0)
            {
                conexionBD.AbrirConexion();
                String consulta = "SELECT descripcion from PRODUCTO WHERE idProducto = " + id;
                SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
                dataReader.Read();
                string aux = dataReader[0].ToString();
                dataReader.Close();
                conexionBD.CerrarConexion();
                return aux;
            }
            else
            {
                return "";
            }
        }



    }
}